package com.king.juc.fivetest;

/**
 * balking模式习题
 * 希望doInit()方法仅被调用一次, 下面的实现是否有问题, 为什么?
 * @author king
 * @date 2020/11/28 20:19
 */
public class TestVolatile {
    // volatile 只能保证可见性, 需要使用 synchronized 来保证

    volatile boolean initialized = false;

    void init(){
        if(initialized){
            return;
        }
        // 会被多次调用
        doInit();
        initialized = true;
    }

    private void doInit(){}
}
